Systems and methods for collecting, tracking, and storing system performance and event data for computing devices

ABSTRACT

A system is configured to track and store system and event data for various computing devices. The system is configured to associate the various computing devices with profiles based at least in part on characteristics of the computing devices. The system is further configured to compare performance data and/or performance metrics for particular computing devices having a particular profile against all other devices that share the particular profile. The system then displays this comparison to a user of the particular computing device, substantially automatically diagnoses an issue with the particular computing device based on the performance and system event data, and/or enables the user to diagnose the problem based on the performance and system event data.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. Non-Provisional patentapplication Ser. No. 17/815,363 titled “SYSTEMS AND METHODS FORCOLLECTING, TRACKING, AND STORING SYSTEM PERFORMANCE AND EVENT DATA FORCOMPUTING DEVICES,” FILED Jul. 27, 2022, which is a continuation of U.S.Non-Provisional patent application Ser. No. 16/952,648 titled “SYSTEMSAND METHODS FOR COLLECTING, TRACKING, AND STORING SYSTEM PERFORMANCE ANDEVENT DATA FOR COMPUTING DEVICES,” FILED Nov. 19, 2020 (now U.S. Pat.No. 11,429,506), which is a continuation of U.S. Non-Provisional patentapplication Ser. No. 16/106,588 titled “SYSTEMS AND METHODS FORCOLLECTING, TRACKING, AND STORING SYSTEM PERFORMANCE AND EVENT DATA FORCOMPUTING DEVICES,” filed Aug. 21, 2018 (now U.S. Pat. No. which is acontinuation of U.S. Non-Provisional patent application Ser. No.14/026,965, titled “SYSTEMS AND METHODS FOR COLLECTING, TRACKING, ANDSTORING SYSTEM PERFORMANCE AND EVENT DATA FOR COMPUTING DEVICES,” filedSep. 13, 2013 (now U.S. Pat. No. 10,073,754), the contents of each areincorporated herein by reference in their entireties.

BACKGROUND

When diagnosing computing issues, technicians or others may only be ableto ascertain information about the computing device in its currentstate. This can make it difficult to determine whether the device istruly performing in a sub-standard way and, if so, what is causing thesubstandard performance. Accordingly, there is a need for improvedsystems and methods for assisting a user in assessing and/or improvingthe performance of computing devices.

SUMMARY

A non-transitory computer-readable medium storing computer-executableinstructions for: (A) storing, in memory, time stamped performance dataassociated with each of a plurality of computing devices taken overtime; (B) storing, in memory, time stamped event data associated witheach of said plurality of computing devices taken over time; and (C)using at least said time stamped performance data and/or said event datato provide an individual associated with a first of said plurality ofcomputing devices with a comparison of a performance of said firstcomputing device with a typical performance of other computing devices,from said plurality of computing devices, that are similar to said firstcomputing device. This comparison may, for example, be in the form of alongitudinal display of information that displays performance and/orevent data for one or more of the computing devices (or aggregatedinformation for a plurality of the computing devices) taken over time.

A non-transitory computer-readable medium, according to variousembodiments, stores computer-executable instructions for: (A) receivingfirst system event data for a first computing device having a deviceprofile, the device profile comprising one or more characteristics; (B)receiving first performance data for the first computing device; (C)receiving second system event data for at least one second computingdevice having the device profile; (D) receiving second performance datafor the least one second computing device; and (E) enabling a user tocompare the first system event data, the first performance data, thesecond system event data, and the second performance data.

A computer system, according to particular embodiments, comprises atleast one processor. In various embodiments, the computer system isconfigured for: (A) receiving first data associated with a first mobilecomputing device, the first data comprising first performance data andat least one first system event and the first mobile computing devicecomprising at least one mobile device characteristic; (B) receivingsecond data associated with one or more second mobile computing devices,wherein the second data comprises second performance data and at leastone second system event for each of the one or more second mobilecomputing devices; (C) establishing at least one profile, the at leastone profile being associated with the at least one mobile devicecharacteristic; (D) determining which of the one or more secondcomputing devices has the at least one mobile device characteristic; (E)at least partially in response to determining that the one or moresecond computing devices have the at least one mobile devicecharacteristic, assigning the one or more second computing devices tothe profile; (F) determining whether the first computing device has theat least one mobile device characteristic; and (G) displaying the firstdata and the second data of the one or more second computing devicesassigned to the profile to a user of the first mobile device.

A computer-implemented method, according to various embodiments,comprises receiving, by a processor, system event data and systemperformance data for a plurality of computing devices. In particularembodiments, the plurality of computing devices comprise a firstcomputing device associated with first system event data and firstsystem performance data and share at least one profile based at least onone or more characteristics of the plurality of computing devices. Invarious embodiments, the computer-implemented method further comprises:determining, by a processor, an average performance metric for theplurality of computing devices based at least in part on the systemevent data and the system performance data; determining, by a processor,a first performance metric for the first computing device based at leastin part on the first system event data and the first system performancedata; and displaying, by a processor, the average performance metric andthe first performance metric to a user of the first computing device.

BRIEF DESCRIPTION OF THE DRAWINGS

Various embodiments of a system and method for collecting, tracking, andstoring performance and system information for computing devices aredescribed below. In the course of this description, reference will bemade to the accompanying drawings, which are not necessarily drawn toscale, and wherein:

FIG. 1 is a block diagram of a computing device diagnostic system inaccordance with an embodiment of the present system;

FIG. 2 is a schematic diagram of a computer, such as the systeminformation server of FIG. 1 , that is suitable for use in variousembodiments;

FIG. 3 depicts a flow chart that generally illustrates various stepsexecuted by a system diagnostic modules that, for example, may beexecuted by the system information server of FIG. 1 ;

FIGS. 4-9 are exemplary screen displays of the system according tovarious embodiments.

DETAILED DESCRIPTION

Various embodiments now will be described more fully hereinafter withreference to the accompanying drawings. It should be understood that theinvention may be embodied in many different forms and should not beconstrued as limited to the embodiments set forth herein. Rather, theseembodiments are provided so that this disclosure will be thorough andcomplete, and will fully convey the scope of the invention to thoseskilled in the art. Like numbers refer to like elements throughout.

Overview

In various embodiments, a system and method for collecting, tracking,and storing performance and system information for computing devices(e.g., desktop computers, mobile computing devices such as tabletcomputers, smartphones, etc.) is configured to store system andperformance information for one or more computing devices (e.g., one ormore similar computing devices) and in particular for mobile computingdevices. In various embodiments, the computing device performanceinformation includes any suitable performance information such as, forexample, battery usage, processor resource usage, etc. for the computingdevice. The computing device system information may include any suitablesystem information (e.g., event information), such as, for example: (1)signal level changes (e.g., a change in signal strength in a connectionto a wireless network); (2) information about newly installed software;(3) a log of peripheral devices that have been connected to ordisconnected from the computing device (e.g., such as printers,scanners, smartphones, etc. via usb, firewire or other suitable portassociated with the computing device); (4) information about whatcomputer networks the computing device has connected and/or disconnectedfrom; (5) any websites visited via the computing device, etc.

In various embodiments, the system collects and stores this informationat substantially regular intervals (e.g., daily, weekly, hourly, or anyother suitable interval). In other embodiments, the system is configuredto collect data substantially automatically as events occur. Forexample, in the case of a smartphone, the system may collect informationabout a system event related to the installation of a new softwareapplication on the smartphone. The system event data in this example mayinclude, for example, a publisher of the software application, a versionof the software application, or any other information related to thesoftware application. In various embodiments, the collected informationmay be used to provide a longitudinal view of the computing device'sperformance and system information (e.g., snapshots or other depictionsof the performance and system information over time).

In particular embodiments, the system is configured to store andtransmit the collected information to, for example, a cloud storageserver or other server for later retrieval. The system may be configuredto transmit the information at substantially regular intervals, inresponse to a pre-determined event, such as in response to determiningthat the device is idle and charging, or at any other suitable time.

The system, in various embodiments, is configured to provide thisinformation to a user that is troubleshooting performance issues on aparticular computing device. In particular embodiments, the systemprovides this information for only the particular computing device beingtroubleshot. In other embodiments, the system is configured to providethis information for the computer being troubleshot as well asinformation (e.g., aggregated information) associated with computingdevices that are similar to the computing device at issue. These similarcomputing devices may include, for example: (1) similar devicemanufacturers and models; (2) devices having similar hardwareconfigurations (e.g., such as similar processors, similar amounts ofRAM, etc.); (3) similar types of computing devices (e.g., other tabletcomputers, other smartphones, etc.); (4) computing devices located insimilar geographic areas; (5) computing devices running similarsoftware; (6) computing devices connected via similar or the samenetworks (e.g., particular Local Area Networks, cellular telephonenetworks, etc.); (7) computing devices with similar connectedperipherals; (8) computing devices running similar operating systems;and/or (9) or any other suitable similar computing devices. In variousembodiments, comparison of device performance to performance of similarother devices (e.g., average performance of similar devices) may enablethe system to provide a relative performance of a particular deviceversus actual performance of similar devices (e.g., as opposed tocomparison to a pre-determined baseline performance metric)

In various embodiments, the system is configured to enable a technicianto diagnose or troubleshoot the computing device based at least in parton the information (e.g., the performance information and/or the systeminformation). For example, the system may display historical computingdevice performance information as well as system information that may beused to enable a technician or other user to determine which particularevents (e.g., installation of particular software, etc.) may have causeda decrease in device performance. In other embodiments, the system isconfigured to substantially automatically diagnose or troubleshoot thecomputing device based at least in part on the performance and systeminformation. In various embodiments, the information may reveal that thecomputing device is infected by malicious software (e.g., viruses,spyware, adware, etc.), that the computing device needs to bedefragmented, that the computing device is suffering from thermalfatigue or that the computing device's processor or battery is sufferingfrom other suitable hardware failures. In various embodiments, thesystem is configured to substantially automatically correct any problemdiagnosed based on the information.

Exemplary Technical Platforms

As will be appreciated by one skilled in the relevant field, the presentinvention may be, for example, embodied as a computer system, a method,or a computer program product. Accordingly, various embodiments may takethe form of an entirely hardware embodiment, an entirely softwareembodiment, or an embodiment combining software and hardware aspects.Furthermore, particular embodiments may take the form of a computerprogram product stored on a computer-readable storage medium havingcomputer-readable instructions (e.g., software) embodied in the storagemedium. Various embodiments may take the form of web-implementedcomputer software. Any suitable computer-readable storage medium may beutilized including, for example, hard disks, compact disks, DVDs,optical storage devices, and/or magnetic storage devices.

Various embodiments are described below with reference to block diagramsand flowchart illustrations of methods, apparatuses (e.g., systems) andcomputer program products. It should be understood that each block ofthe block diagrams and flowchart illustrations, and combinations ofblocks in the block diagrams and flowchart illustrations, respectively,can be implemented by a computer executing computer programinstructions. These computer program instructions may be loaded onto ageneral purpose computer, special purpose computer, or otherprogrammable data processing apparatus to produce a machine, such thatthe instructions which execute on the computer or other programmabledata processing apparatus to create means for implementing the functionsspecified in the flowchart block or blocks.

These computer program instructions may also be stored in acomputer-readable memory that can direct a computer or otherprogrammable data processing apparatus to function in a particularmanner such that the instructions stored in the computer-readable memoryproduce an article of manufacture that is configured for implementingthe function specified in the flowchart block or blocks. The computerprogram instructions may also be loaded onto a computer or otherprogrammable data processing apparatus to cause a series of operationalsteps to be performed on the computer or other programmable apparatus toproduce a computer implemented process such that the instructions thatexecute on the computer or other programmable apparatus provide stepsfor implementing the functions specified in the flowchart block orblocks.

Accordingly, blocks of the block diagrams and flowchart illustrationssupport combinations of mechanisms for performing the specifiedfunctions, combinations of steps for performing the specified functions,and program instructions for performing the specified functions. Itshould also be understood that each block of the block diagrams andflowchart illustrations, and combinations of blocks in the blockdiagrams and flowchart illustrations, can be implemented by specialpurpose hardware-based computer systems that perform the specifiedfunctions or steps, or combinations of special purpose hardware andother hardware executing appropriate computer instructions.

Example System Architecture

FIG. 1 is a block diagram of a System 110 according to a particularembodiment. As may be understood from this figure, the System 110includes one or more computer networks 115, a System Information Server100, a Database 140, and one or more remote computing devices such asmobile computing device 156 (e.g., such as a smart phone, a tabletcomputer, a wearable computing device, a laptop computer, etc.) or adesktop computer 154. In particular embodiments, the one or morecomputer networks facilitate communication between the SystemInformation Server 100, Database 140, and one or more remote computingdevices 152, 154.

The one or more computer networks 115 may include any of a variety oftypes of wired or wireless computer networks such as the Internet, aprivate intranet, a mesh network, a public switch telephone network(PSTN), or any other type of network (e.g., a network that usesBluetooth or near field communications to facilitate communicationbetween computers). The communication link between System InformationServer 100 and Database 140 may be, for example, implemented via a LocalArea Network (LAN) or via the Internet.

FIG. 2 illustrates a diagrammatic representation of a computerarchitecture 120 that can be used within the System 110, for example, asa client computer (e.g., one of client computers 152, 154 shown in FIG.1 ), or as a server computer (e.g., System Information Server 100 shownin FIG. 1 ). In particular embodiments, the computer 120 may be suitablefor use as a computer within the context of the System 110 that isconfigured for collecting, tracking, and storing performance and systeminformation for computing devices.

In particular embodiments, the computer 120 may be connected (e.g.,networked) to other computers in a LAN, an intranet, an extranet, and/orthe Internet. As noted above, the computer 120 may operate in thecapacity of a server or a client computer in a client-server networkenvironment, or as a peer computer in a peer-to-peer (or distributed)network environment. The Computer 120 may be a desktop personal computer(PC), a tablet PC, a set-top box (STB), a Personal Digital Assistant(PDA), a cellular telephone, a web appliance, a server, a networkrouter, a switch or bridge, or any other computer capable of executing aset of instructions (sequential or otherwise) that specify actions to betaken by that computer. Further, while only a single computer isillustrated, the term “computer” shall also be taken to include anycollection of computers that individually or jointly execute a set (ormultiple sets) of instructions to perform any one or more of themethodologies discussed herein.

An exemplary computer 120 includes a processing device 202, a mainmemory 204 (e.g., read-only memory (ROM), flash memory, dynamic randomaccess memory (DRAM) such as synchronous DRAM (SDRAM) or Rambus DRAM(RDRAM), etc.), a static memory 206 (e.g., flash memory, static randomaccess memory (SRAM), etc.), and a data storage device 218, whichcommunicate with each other via a bus 232.

The processing device 202 represents one or more general-purposeprocessing devices such as a microprocessor, a central processing unit,or the like. More particularly, the processing device 202 may be acomplex instruction set computing (CISC) microprocessor, reducedinstruction set computing (RISC) microprocessor, very long instructionword (VLIW) microprocessor, or processor implementing other instructionsets, or processors implementing a combination of instruction sets. Theprocessing device 202 may also be one or more special-purpose processingdevices such as an application specific integrated circuit (ASIC), afield programmable gate array (FPGA), a digital signal processor (DSP),network processor, or the like. The processing device 202 may beconfigured to execute processing logic 226 for performing variousoperations and steps discussed herein.

The computer 120 may further include a network interface device 208. Thecomputer 120 also may include a video display unit 210 (e.g., a liquidcrystal display (LCD) or a cathode ray tube (CRT)), an alphanumericinput device 212 (e.g., a keyboard), a cursor control device 214 (e.g.,a mouse), and a signal generation device 216 (e.g., a speaker).

The data storage device 218 may include a non-transitorycomputer-accessible storage medium 230 (also known as a non-transitorycomputer-readable storage medium or a non-transitory computer-readablemedium) on which is stored one or more sets of instructions (e.g.,software 222) embodying any one or more of the methodologies orfunctions described herein. The software 222 may also reside, completelyor at least partially, within the main memory 204 and/or within theprocessing device 202 during execution thereof by the computer 120—themain memory 204 and the processing device 202 also constitutingcomputer-accessible storage media. The software 222 may further betransmitted or received over a network 115 via a network interfacedevice 208.

While the computer-accessible storage medium 230 is shown in anexemplary embodiment to be a single medium, the term“computer-accessible storage medium” should be understood to include asingle medium or multiple media (e.g., a centralized or distributeddatabase, and/or associated caches and servers) that store the one ormore sets of instructions. The term “computer-accessible storage medium”should also be understood to include any medium that is capable ofstoring, encoding or carrying a set of instructions for execution by thecomputer and that cause the computer to perform any one or more of themethodologies of the present invention. The term “computer-accessiblestorage medium” should accordingly be understood to include, but not belimited to, solid-state memories, optical and magnetic media, etc.

Exemplary System Platform

Various embodiments of a system and method for collecting, tracking, andstoring performance and system information for computing devices may beimplemented within the context of any suitable system informationservice. In particular embodiments, the system may be implemented aspart of an insurance service such as a service for insuring computingdevices, for example, to ensure that the computing devices arefunctioning properly or may require replacement. In particularembodiments, the system may be provided by an insurance carrier thatinsures computing devices to customers of the insurance service (e.g.,for use with computing devices that the customers inure through theinsurance service). Various aspects of the system's functionality may beexecuted by certain system modules, including a System DiagnosticsModule 300, which may, for example, be executed by a softwareapplication running on a mobile computing device (e.g., a cellular phoneor tablet computer) or other computing device. This module is discussedin greater detail below.

System Diagnostics Module

FIG. 3 is a flow chart of operations performed by an exemplary SystemDiagnostics Module 300. In particular embodiments, the SystemDiagnostics Module 300 may facilitate collecting, tracking, and storingperformance and system information for at least one computing device andprovide that information to a technician or other user for the purposeof diagnosing performance issues with the computing device and/ormonitoring the current performance of the device relative to thedevice's past performance, or relative to the performance of other,similar devices. In various embodiments, the System Diagnostics Module300 is executed as part of a software application stored locally oncomputing device (e.g., a mobile computing device).

When executing the System Diagnostics Module 300, the system begins, atStep 310, by receiving first system event data for a first computingdevice. In particular embodiments, the system event data may include oneor more system events, which may, for example, be associated with a time(e.g., a date and time) at which the one or more events occurred. In ageneric example, the system event data may include time-stamped dataregarding a first event which occurred at a first time, a second eventwhich occurred at a second time, and so on. In various embodiments, theone or more events may be at least somewhat related (e.g., by type ofevent, etc.). In particular embodiments, the system event data mayinclude a log of system events that is populated, essentially in realtime, over time.

In various embodiments, the system event data includes a change insignal level for a connection between the first computing device and oneor more networks (e.g., a wireless local area network, a cellulartelephone network, etc.). A system event may include, for example, achange in signal level from two bars to three bars for a connectionbetween the first computing device (e.g., a smartphone) and a particularcellular telephone network (e.g., Verizon®, at&t®, Sprint®, etc.). Inother embodiments, the system event data may include any other suitablechange in signal strength between the first computing device and one ormore networks (e.g., a change from a weak to a strong signal, etc).

In other embodiments, system event data includes a connection to ordisconnection from a particular network (e.g., a wireless network). Forexample, in the case of a first computing device being a smartphone, thesystem may receive system event data that includes informationassociated with a time at which the first computing device connected toa new wireless local area network. The system event data associated witha connection and/or disconnection with a particular network may furtherinclude information such as, for example: (1) security features of thenetwork (e.g., whether the network has wireless security protocols suchas WEP, WPA, WPA2 and so on); (2) whether the first computing device hasconnected to the network before (e.g., whether the network is a familiarnetwork); (3) a signal strength between the first computing device andthe network; (4) or any other suitable information associated with thefirst computing device's connection to the network.

In various embodiments, the system event data may include data aboutactivation and deactivation of various features of the computing device.In particular embodiments, this may include, for example, turningairplane mode on or off for the first computing device, turningBluetooth on or off for the first computing device, turning GPS (e.g.,location based-services) on or off for the first computing device, etc.

In particular embodiments, the system event data may include dataassociated with newly installed software on the first computing device.For example, the system may receive system event data that includes adate and time at which a new software application was installed on thefirst computing device. In various embodiments, the system event data insuch cases may further include a file size of the software application,a publisher of the software application, a source from which thesoftware application was installed (e.g., a website from which thesoftware was downloaded, etc.). In other embodiments, system event datamay further include information about software removal from the firstcomputing device (e.g., a system event may include deletion of aparticular software application from the first computing device).

In particular embodiments, the system event data includes a log ofperipheral devices (e.g., printers, scanners, external hard disks,optical drives, and so on) that have been connected to or disconnectedfrom the first computing device (e.g., via USB, firewire, wirelessnetwork, or other suitable mechanism that the first computing deviceincludes for communicating with peripheral devices). In variousembodiments, the system event data includes a time at which theperipheral devices were connected and/or disconnected, informationassociated with any device driver or other software installed on thefirst computing device in association with the peripheral device, or anyother suitable information related to the peripheral device (e.g.,device type, model number, manufacturer, etc.). For example, the systemmay store information associated with a new printer installed on thecomputing device at least partially in response to the installation ofthe new printer. The information associated with the new printer mayinclude, for example, a port on the computing device via which theprinter is connected to the computing device, driver informationinstalled to enable the computing device to communicate with theprinter, software installed on the computing device for use with theprinter, etc.

In various embodiments, the system event data includes a log of any webpages accessed by the first computing device (e.g., a browsing historyof the first computing device), which may, for example, include a timeat which various web pages were accessed. In other embodiments, thesystem event data may include other data related to web-browsing, suchas, for example, cookie data (e.g., a time at which a particular cookiewas created and the contents of the cookie), cache, or other suitabledata.

In particular embodiments, the first computing device is a mobilecomputing device (e.g., such as a smartphone, laptop, tablet computer,etc.). In other embodiments, the first computing device is a desktopcomputer. In particular embodiments, the system is configured to receivethe system event data via an application on the first computing devicethat is configured to log and/or store system event data (e.g., assystem events occur). In particular embodiments, the system isconfigured to receive the system event data substantially automaticallyas events occur. For example, the system may store informationassociated with a hands-free Bluetooth headset inresponse to a pairingof the headset with a smartphone. The system event data in such a casemay include, for example, a make and model of the Bluetooth headset, atime at which the pairing occurred, a battery life of Bluetooth headset,or any other suitable information related to the Bluetooth headset orthe pairing.

In various embodiments, the system is configured to store the systemevent data locally (e.g., on the first computing device). For example, asoftware application stored on the first computing device may at leasttemporarily store the system event data. In other embodiments, thesystem is configured to store the system event data locally and transmitthe system event data to, for example, a cloud storage server or otherserver or other suitable remote storage location for later retrieval. Inparticular embodiments, the system is configured to transmit the systemevent data at substantially regular intervals (e.g., daily, twice a day,every six hours, or any other suitable time interval). In otherembodiments, the system is configured to transmit the system event datain response to a pre-determined events, such as in response todetermining that the first computing device is plugged into an externalpower source (e.g., the first computing device is plugged in andcharging in the case of a first computing device that is a smart phone).In still other embodiments, the system is configured to transmit thesystem event data in response to determining that the first computingdevice is connected to the internet (e.g., via a wireless local areanetwork, a particular wireless local area network, a cellular telephonenetwork, etc.). In a particular embodiment, the system is configured totransmit the system event data in response to determining that the firstcomputing device is plugged into an external power source and connectedto the internet via a wireless local area network (e.g., as opposed to acellular telephone network via 3g, 4g, etc.).

Returning to Step 320, the system continues by receiving firstperformance data for the first computing device. In various embodiments,the first performance data includes battery usage (e.g., rate ofdrainage, charge level, etc.), processor resource usage, clock rate,million floating-point operations per second (MFLOPS), storage usage,data usage (e.g., amount of mobile data versus Wi-Fi data usage), or anyother suitable performance metric or benchmark relevant to the firstcomputing device's performance. In various embodiments, the firstperformance data is received at substantially the same time (e.g., andassociated with) a particular system event data point received at Step310. For example, battery usage may be received as system performancedata for a time when system event data indicates that the firstcomputing device is out-of-network (e.g., not currently connected to awireless network but actively searching for one, which may, for example,use more of the first computing device's available battery life). Inparticular embodiments, system performance data may include an averageperformance over a particular amount of time (e.g., average processorusage over a day, average time for battery to drain to a particularlevel, etc.). In particular embodiments, the system is configured touser the performance information to create a log of time-stampedperformances records for the device.

In various embodiments, the system is configured to define performancemetrics based at least in part on the first performance data. Forexample, the performance metrics may be based at least in part on acombination of two or more performance data points such as, for example,the types of performance data discussed immediately above. For example,a particular performance metric may be based at least in part on bothbattery usage and processor usage. In various embodiments, the systemmay be configured to define performance metrics based on any othersuitable factors.

The system then, at Step 330, receives second system event data andsecond performance data for one or more second computing devices thatshare a profile with the first computing device. In various embodiments,the second system event data may be any suitable system event dataassociated with the one or more second computing devices, such as, forexample, any of the first system event data described above with respectto the first computing device (e.g., at Step 310). In particularembodiments, the second performance data may be any suitable performancedata associated with the one or more second computing devices, such as,for example, any of the types of first performance data described abovewith respect to the first computing device (e.g., at Step 320).

In various embodiments, the one or more second computing devices thatshare at least one profile with the first computing device are computingdevices that have one or more characteristics in common with the firstcomputing device (e.g., are the same type of device, are the same modelof device, run similar software to the first computing device, and/orhas a similar operating system to the first computing device, etc.). Inparticular embodiments, the system is configured to establish the atleast one profile based at least in part on one or more characteristicsof the various computing devices (e.g., by substantially automaticallydetermining suitable profiles, associating one or more characteristicswith the profiles, and assigning any computing devices having the one ormore characteristics to the associated profiles). In variousembodiments, the system is configured to establish the at least oneprofile based at least in part on one or more characteristics of thefirst computing device. The system, in various embodiments, is thenconfigured to assign computing devices (e.g., the one or more secondcomputing devices) to particular profiles in response to determiningthat the computing devices have the one or more characteristicsassociated with the particular profiles.

In particular embodiments, the one or more characteristics include, forexample, a particular hardware configuration of the first computingdevice (e.g., a particular processor that the first computing deviceincludes, an amount of RAM that the first computing device has, etc.).In particular embodiments, the one or more characteristics that thesystem may use to assign a profile to various computing devices includesa type of computing device. For example, if the first computing deviceis a smartphone, the system may establish a profile for smart phones, ifthe first computing device is a tablet computer, the system mayestablish a profile for tablet computers, etc. In particularembodiments, the one or more characteristics may include particularsoftware stored on the computing devices. For example, the system maycreate a profile for all computing devices that are running particularsoftware. In other embodiments, the one or more characteristics mayinclude an operating system of the computing devices (e.g., Windows,iOS, Android, etc.).

In various embodiments, the one or more characteristics may include aparticular geographic area in which the computing devices are located.The particular geographic area may be determined based at least in parton a GPS position of the computing device or using any other suitabletechniques. In particular embodiments, a geographic area of a computingdevice may include a network to which the first computing device isconnected (e.g., a particular wireless local area network, a connectionto a particular cellular tower in a particular cellular telephonenetwork, etc.). When a computing device is connected to a particularcellular tower on a particular cellular telephone network, the systemmay, for example, establish a profile for all computing devicesconnected to the same particular cellular tower.

In various embodiments, the one or more characteristics may includehaving particular peripheral devices connected to the computing device(e.g., a printer, a particular brand of peripheral device, a scanner,etc.). The system may, for example, establish a profile for computingdevices having a particular model printer connected via USB.

Particular profiles may also include a plurality of different devicecharacteristics. For example, a profile may be defined as any computingdevice made by a particular manufacturer (e.g., Apple®, Samsung®, etc.)that is of a specific model/type, and that is running at least aparticular combination of software applications.

In particular embodiments, before receiving the second system event dataand second performance data for the one or more second computing devicessharing a profile with the first computing device, the system isconfigured to determine what profiles are associated with the firstcomputing device and which of the one or more second computing devicesare associated with those profiles. In various embodiments, the systemis configured to populate a database that includes the first systemevent data, first performance data, second system event data, and secondperformance data. This database may include, for example, all relevantdata for any computing devices that are part of the system. The systemmay then assign (e.g., or associate) data associated with computingdevices that fit into a particular profile to that particular profile.The system may then use the aggregated profile data to determine anaverage performance of devices sharing that profile for comparison to aparticular device having that profile.

For example, if the system receives system event and performance datafrom one hundred smartphones, the system would store that data for eachof the one hundred smartphones. If ten of those one hundred smart phoneswere iPhone 5s, the system may create a profile for iPhone 5s thatincludes only the data for the ten iPhone 5s. The system may thendetermine an average performance of the iPhone 5s and display thataverage performance to a user of one of the iPhone 5s along with thatuser's iPhone 5's actual performance. The system may also create asecond profile that includes all smartphones. When comparing the iPhone5 user's performance to the second profile, the system may display theaverage performance of all 100 smartphones along with the iPhone 5user's actual performance.

In particular embodiments, the characteristics of each particularprofile are determined substantially automatically by the system. Inother embodiments, profiles are established based at least in part on arequest from a user to view an average performance for devices havingparticular characteristics (e.g., devices that share a particularcharacteristic with a device controlled by the user). In variousembodiments, the request may come from the user of the first computingdevice. In other embodiments, the request may come from a personassociated with a diagnostic service for determining issues withcomputing devices having particular profiles.

Returning to Step 340, the system continues by determining an averagesystem performance for the one or more second computing devices (e.g.,the one or more second computing devices having a particular profile).In a particular embodiment, the system is configured to determine anaverage performance for all devices within a particular profile. Inparticular embodiments, the determined average may include an aggregateof the performance metrics described above. In other embodiments, thedetermined average may be a simple mean of a particular piece ofperformance data for all the computing devices sharing a particularprofile. In various embodiments, the system is configured to determinean aggregated (e.g., average) performance for all computing devicessharing a particular profile.

The system continues, at Step 350, by displaying the first event data,the first performance data, and the average of the second performancedata to a user (e.g., by displaying the information on the firstcomputing device's display screen). In various embodiments, the user isa user of the first computing device (e.g., the owner and user of asmart phone). In other embodiments, the user is a technician or otherperson diagnosing performance issues with the first computing device. Inparticular embodiments, displaying the data comprises displaying thedata to the user, for example, via a graph, chart or other suitableformat. For example, in particular embodiments, the system may displayto owners of an iPhone 4s an average battery life of their device aswell as the average battery life of other iPhone 4s users. The user maythen use that data for any suitable reason, such as, for example, todetermine whether they are experiencing relatively poor battery life, todetermine a cause of the decrease, and potentially correct any issuecausing a decrease in battery life. In particular embodiments, the datamay enable a user to ascertain that a particular computing device hasfaulty components (e.g., one or more components may be suffering fromthermal fatigue). In such embodiments, a computing device with similarevent data to a second computing device that has better performance data(e.g., a computing device that is used in a similar manner to a betterperforming similar computing device) may require replacement of one ormore components.

In various embodiments, the system is configured to enable a technicianor the user of the first computing device to diagnose or troubleshootthe computing device based at least in part on the data (e.g., theperformance information and/or the system information). For example, thesystem may display historical computing device performance informationas well as some system information to enable a technician or other userto determine whether particular events (e.g., installation of particularsoftware, etc.) may contribute to a decrease in performance.

Automatic Device Diagnosis

In various embodiments, the system is configured to substantiallyautomatically determine issues with a computing device that may beaffecting performance. In a particular example, for a user experiencinga decrease in battery life of their Samsung Galaxy S4, the system maycompare application usage by that user with other Galaxy S4 users todetermine that a particular software application that the user uses isnot used by other users that experience better battery life. The systemmay then be configured to offer a solution to the user, by, for example,recommending the user delete the offending application or recommendingthe user limit their use of the application.

Exemplary User Experience

In a particular embodiments, a user may install a software applicationon their mobile computing device (e.g., on their smartphone). While thesoftware application is running, the application may log time-stampedsystem event data (e.g., such as any of the system event data describedin this document) and time-stamped system performance data for themobile computing device. The software application logging the data mayrun substantially in the background on the mobile computing device(e.g., the application may not display anything on the mobile devicewhile the application logs the data or otherwise notify the user as theapplication logs the data). When the user plugs in the mobile computingdevice (e.g., in order to charge a battery of the mobile computingdevice) and while the mobile computing device is connected to Wi-Fi, thesystem may transmit the logged, time-stamped data to a central server(e.g., a cloud storage server) on which the system is configured tostore similar data for a plurality of computing devices.

In various embodiments, the system may associate the data for thecomputing devices (e.g., the data stored on the central server) with oneor more profiles based on characteristics of the computing devices. Thesystem may, for example, assign a profile to the user's smart phone thatincludes a profile for the make and model of smart phone. The system maythen aggregate the data for all smart phones in the profile anddetermine an average performance for devices sharing the profile.

At any appropriate time, the user may open the software application ontheir mobile computing device and request to view performance data fortheir phone as well as comparative performance data for how their phoneperforms relative to other phones that share a profile with the user'ssmart phone. In various embodiments, the user may select or provide aprofile for which the user desires to view their device's relativeperformance. For example, the user may request that the system displayrelative performance data for all devices with a particular softwareapplication installed, regardless of device type. The system may then,in response to the request, determine which of the plurality of deviceshave that software application installed and further determine averageperformance data for those similar devices for display to the user, forexample, based on the data stored on the remote server. In particularembodiments, the average performance data may be broken down into aplurality of different performance categories (e.g., processing speed,strength of wireless connection, battery life, etc . . . ).

FIGS. 4-9 are exemplary screen displays depicting various features ofthe system described herein. As should be understood, these screendisplays may be displayed on any suitable device (e.g., a firstcomputing device as described in the context of the System DiagnosticsModule 300 above).

FIG. 4 depicts a screen display 400 showing information 410 about aparticular computing device. As shown in this figure, the information410 includes information about a time since the last reboot of theparticular computing device (e.g., 1 day) and a recommendation forimproving system performance (e.g., advice that rebooting the computingdevice may improve system performance). The information 410 furtherincludes information about the most recently installed application,information about connection to a voice and data network, and Wi-Ficonnectivity information. The information 410 relating to the mostrecently installed application also includes comparative information 415showing an average monthly data usage for other users of the latestinstalled application. As may be understood from this figure, the systemis configured to display information 410 received from similar devices(e.g., devices that also have the particular application installed) anddisplay the information 410 in association with a related system eventfor the particular computing device (e.g., installation of theparticular application).

FIG. 5 depicts a screen display 500 showing current and historicalbattery charge levels 510. As may be understood from this figure, thesystem is configured to display a current battery level in addition tohistorical battery level over time. Battery usage, in variousembodiments, is one of the many pieces of performance data that thesystem is configured to track over time. FIG. 6 depicts a screen display60 showing information related to battery level 610 according to anotherembodiment. As shown in this figure, the system is also configured toshow comparative battery life information 615 comparing the averagebattery life for the device on which the screen display is displayedversus an average battery life of others (e.g., others having a similardevice, such as a device of the same make and model). As may beunderstood from this figure, the user's device for which the data isdisplayed has a better than average battery life per full-charge (e.g.,16h 9m versus 14h 7m).

FIG. 7 depicts a screen display 700 showing recent connectivity activity710 for a particular computing device (e.g., a DROID RAZR). As shown inthe figure, the system displays recent changes in Wi-Fi signal strength,recent changes in connections to particular Wi-Fi networks, turning onand off of mobile data network, etc. As may be understood from thisfigure, the system logs these connectivity events as they occur andstores them for later display to the user. FIG. 8 depicts a screendisplay 800 showing further system information 810 which the system maybe configured to display. As shown in this figure, the systeminformation may include a model of the device, an operating system onthe device, a client version, a status, activation information,information about the latest reboot of the device, etc. The system isfurther configured to display batter state, battery health, batterycharging technology, battery charging time, battery level, network andstorage information, and so on. In various embodiments, the system mayuse this information to identify one or more similar computing devices(e.g., computing devices that share one or more characteristicsdisplayed as the system information 810 in FIG. 8 ).

FIG. 9 depicts a screen display 900 showing application information 910for a particular device (e.g., a particular DROID RAZR). A shown in thisfigure the system, for the various applications installed on the device,tracks and stores for display data usage for each application, CPUusage, and other information related to the various applications.

Conclusion

Many modifications and other embodiments of the invention will come tomind to one skilled in the art to which this invention pertains havingthe benefit of the teachings presented in the foregoing descriptions andthe associated drawings. Therefore, it is to be understood that theinvention is not to be limited to the specific embodiments disclosed andthat modifications and other embodiments are intended to be includedwithin the scope of the appended claims. Although specific terms areemployed herein, they are used in a generic and descriptive sense onlyand not for the purposes of limitation.

1-30. (canceled)
 31. A computer-implemented method comprising: receivinga first data set associated with a first mobile computing device;identifying at least two profiles associated with the first mobilecomputing device, including a first profile and a second profile;generating a first aggregated data set associated with the firstprofile, wherein the first aggregated data set comprises first dataassociated with a first plurality of mobile computing devices;generating a second aggregated data set associated with the secondprofile, wherein the second aggregated data set comprises second dataassociated with a second plurality of mobile computing devices, whereinthe first plurality of mobile computing devices include at least onedifferent computing device than the second plurality of mobile computingdevices; in response to an indication of a first selection at the firstmobile computing device, causing display of a first graphical userinterface on a screen of the first mobile computing device, wherein thefirst selection is associated with the first profile, wherein the firstgraphical user interface comprises representations based on at least aportion of the first data set and at least a portion of the firstaggregated data set configured to facilitate comparison of the firstmobile computing device to the first plurality of mobile computingdevices; and in response to an indication of a second selection at thefirst mobile computing device, causing display of a second graphicaluser interface on the screen of the first mobile computing device,wherein the second selection is associated with the second profile,wherein the second graphical user interface comprises representationsbased on at least a portion of the first data set and at least a portionof the second aggregated data set configured to facilitate comparison ofthe first mobile computing device to the second plurality of mobilecomputing devices.
 32. The computer-implemented method of claim 31,wherein the first data set comprises performance data for the firstmobile computing device.
 33. The computer-implemented method of claim31, wherein the first data set comprises event data and performance datafor the first mobile computing device.
 34. The computer-implementedmethod of claim 31, wherein the first profile is established based on atleast one device characteristic that is different from the secondprofile.
 35. The computer-implemented method of claim 31, wherein thefirst data set comprises average battery performance for the firstmobile computing device, and the first aggregated data set comprisesaverage battery performance for the first plurality of mobile computingdevices configured for comparison to the average battery performance forthe first plurality of mobile computing devices.
 36. Thecomputer-implemented method of claim 31, wherein the representationsbased on at least a portion of the first data set and at least a portionof the first aggregated data set comprise an average of the firstaggregated data set.
 37. The computer-implemented method of claim 31,wherein the first graphical user interface comprises a first portion ofthe screen and the second graphical user interface comprises a secondportion of the screen displayed simultaneously with the first portion ofthe screen.
 38. The computer-implemented method of claim 31, wherein thefirst data set corresponds to performance data associated with theoccurrence of a first system event experienced by the first mobilecomputing device and the first aggregated data set corresponds toperformance data associated with the occurrence of a second system eventexperienced by the first plurality of mobile computing devices, thesecond system event determined to be equivalent or substantially similarto the first system event.
 39. The computer-implemented method of claim38, wherein the first system event and the second system event compriseinstallation of an application on the first mobile computing device andthe first plurality of mobile computing devices respectively.
 40. Thecomputer-implemented method of claim 38, further comprising triggeringdata collection at the first mobile computing device in response to theoccurrence of the first system event and triggering data collection atthe first plurality of mobile computing devices in response to theoccurrence of the second system event.
 41. The computer-implementedmethod of claim 31, wherein the first plurality of mobile computingdevices includes at least one mobile computing device that is the sameas the second plurality of mobile computing devices.
 42. Thecomputer-implemented method of claim 31, further comprising resolving afault on the first mobile computing device in response to a performanceissue for the first mobile computing device that is determined based atleast in part on comparison of the first mobile computing device to thefirst plurality of mobile computing devices or the second plurality ofmobile computing devices.
 43. A system comprising at least one processorand at least one memory having computer-coded instructions storedthereon, wherein the computer-coded instructions, in execution with theat least one processor, configure the system to: receive a first dataset associated with a first mobile computing device; identify at leasttwo profiles associated with the first mobile computing device,including a first profile and a second profile; generate a firstaggregated data set associated with the first profile, wherein the firstaggregated data set comprises first data associated with a firstplurality of mobile computing devices; generate a second aggregated dataset associated with the second profile, wherein the second aggregateddata set comprises second data associated with a second plurality ofmobile computing devices, wherein the first plurality of mobilecomputing devices include at least one different computing device thanthe second plurality of mobile computing devices; in response to anindication of a first selection at the first mobile computing device,cause display of a first graphical user interface on a screen of thefirst mobile computing device, wherein the first selection is associatedwith the first profile, wherein the first graphical user interfacecomprises representations based on at least a portion of the first dataset and at least a portion of the first aggregated data set configuredto facilitate comparison of the first mobile computing device to thefirst plurality of mobile computing devices; and in response to anindication of a second selection at the first mobile computing device,cause display of a second graphical user interface on the screen of thefirst mobile computing device, wherein the second selection isassociated with the second profile, wherein the second graphical userinterface comprises representations based on at least a portion of thefirst data set and at least a portion of the second aggregated data setconfigured to facilitate comparison of the first mobile computing deviceto the second plurality of mobile computing devices.
 44. The system ofclaim 43, wherein the first data set comprises performance data for thefirst mobile computing device. (New) The system of claim 43, wherein thefirst data set comprises event data and performance data for the firstmobile computing device.
 46. The system of claim 43, wherein the firstprofile is established based on at least one device characteristic thatis different from the second profile.
 47. The system of claim 43,wherein the first data set comprises average battery performance for thefirst mobile computing device, and the first aggregated data setcomprises average battery performance for the first plurality of mobilecomputing devices configured for comparison to the average batteryperformance for the first plurality of mobile computing devices.
 48. Thesystem of claim 43, wherein the representations based on at least aportion of the first data set and at least a portion of the firstaggregated data set comprise an average of the first aggregated dataset.
 49. The system of claim 43, wherein the first graphical userinterface comprises a first portion of the screen and the secondgraphical user interface comprises a second portion of the screendisplayed simultaneously with the first portion of the screen.
 50. Atleast one non-transitory computer readable medium having computer codedinstructions configured to, when executed by at least one processor:receive a first data set associated with a first mobile computingdevice; identify at least two profiles associated with the first mobilecomputing device, including a first profile and a second profile;generate a first aggregated data set associated with the first profile,wherein the first aggregated data set comprises first data associatedwith a first plurality of mobile computing devices; generate a secondaggregated data set associated with the second profile, wherein thesecond aggregated data set comprises second data associated with asecond plurality of mobile computing devices, wherein the firstplurality of mobile computing devices include at least one differentcomputing device than the second plurality of mobile computing devices;in response to an indication of a first selection at the first mobilecomputing device, cause display of a first graphical user interface on ascreen of the first mobile computing device, wherein the first selectionis associated with the first profile, wherein the first graphical userinterface comprises representations based on at least a portion of thefirst data set and at least a portion of the first aggregated data setconfigured to facilitate comparison of the first mobile computing deviceto the first plurality of mobile computing devices; and in response toan indication of a second selection at the first mobile computingdevice, cause display of a second graphical user interface on the screenof the first mobile computing device, wherein the second selection isassociated with the second profile, wherein the second graphical userinterface comprises representations based on at least a portion of thefirst data set and at least a portion of the second aggregated data setconfigured to facilitate comparison of the first mobile computing deviceto the second plurality of mobile computing devices.